package com.jrx.anytxn.param.mapper.ext;

import com.jrx.anytxn.param.entity.BtBatchStatus;
import com.jrx.anytxn.param.mapper.base.BtBatchStatusMapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface ExtBtBatchStatusMapper extends BtBatchStatusMapper {

    /**
     * 根据批次状态查询批扣状态表
     * 批量项目使用
     *
     * @param batchStatus 批次状态列表
     * @param jobName job名称
     * @param businessDate 业务日期
     * @param tenantId 租户id
     * @return 批次状态信息
     */
    Integer countByStatusAndJobName(@Param("batchStatus") String batchStatus, @Param("jobName") String jobName,
                                    @Param("tenantId") String tenantId,@Param("businessDate") Date businessDate);

    /**
     * 根据业务日期与批次状态查询批扣状态表
     * 批量项目使用
     *
     * @param businessDate 业务日期
     * @param batchStatusList 批次状态列表
     * @param jobName job名称
     * @param tenantId 租户id
     * @return 批次状态信息
     */
    List<BtBatchStatus> selectByBusinessDateAndStatusForBatch(@Param("businessDate") Date businessDate,
                                                              @Param("batchStatusList") List<String> batchStatusList,
                                                              @Param("jobName") String jobName,
                                                              @Param("tenantId") String tenantId);

    /**
     * 根据业务日期对批扣状态表的批扣状态进行修改
     *
     * @param businessDate 业务日期
     * @param oriStatus 原状态
     * @param newStatus 新状态
     * @param jobName job名称
     */
    void updateByBusinessDateAndStatusForBatch(@Param("businessDate") Date businessDate,
                                               @Param("oriStatus") String oriStatus,
                                               @Param("newStatus") String newStatus,
                                               @Param("jobName") String jobName);


    /**
     * 根据业务日期与批次状态查询
     * 批量项目使用
     * @param businessDateList 业务日期
     * @param batchStatus 批次状态列表
     * @param jobName job名称
     * @param tenantId 租户id
     */
    List<BtBatchStatus> selectForBatch(@Param("businessDateList") List<Date> businessDateList,
                                       @Param("batchStatus") String batchStatus,
                                       @Param("jobName") String jobName,
                                       @Param("tenantId") String tenantId);


    /**
     * 查询批量信息
     *
     * @param batchStatus 批次状态
     * @param jobName job名称
     * @param businessDate 业务日期
     * @param tenantId 租户id
     * @return 批次状态信息
     */
    BtBatchStatus selectByStatusAndJobName(@Param("batchStatus") String batchStatus, @Param("jobName") String jobName,
                                    @Param("tenantId") String tenantId,@Param("businessDate") Date businessDate);


    int selectByBusiDateAndJobName(@Param("businessDate") Date businessDate,
                                                   @Param("jobName") String jobName,
                                                   @Param("tenantId") String tenantId);


    int selectByBusiDateAndJobNameAndStatus(@Param("businessDate") Date businessDate,
                                            @Param("jobName") String jobName,
                                            @Param("tenantId") String tenantId,
                                            @Param("batchStatus") String batchStatus);
}